package test.specs.historia1;

import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;

import br.com.ffm.info.praticas.fiptwitter.FIPTwitterFacade;
import br.com.ffm.info.praticas.fiptwitter.core.User;
import br.com.ffm.info.praticas.fiptwitter.exception.FIPTwitterServiceException;

import static org.junit.Assert.*;

public class InformacaoUsuarioCenario {

	private FIPTwitterFacade facade;
	private User user;
	private FIPTwitterServiceException ex;
	private Boolean exists;
	
	@Given("eu crio um usuário com login $login senha $senha e nome $nome")
	public void givenEuCrioUmUsuário(String login, String senha, String nome) throws FIPTwitterServiceException{
		facade = new FIPTwitterFacade();
		user = facade.newUser(nome, login, senha);
	}

	@Then("o nome do usuário deve ser igual a $nome")
	public void thenONomeDoUsuarioDeveSer(String nome){
		assertNotNull(user);
		assertEquals(nome, user.getNome());
	}

	@Then("o login do usuário deve ser igual a $login")
	public void thenOLoginDoUsuarioDeveSer(String login){
		assertNotNull(user);
		assertEquals(login, user.getLogin());
	}
	
	
	// Verificações por login...
	@When("eu verifico se o login $login já existe no sistema")
	public void whenEuVerificoSeOLoginJaExisteNoSistema(String login){
		exists = facade.hasLogin(login);
	}

	@Then("o retorno deve ser $bool")
	public void thenORetornoDeveSer(String bool){
		boolean expected = bool.equalsIgnoreCase("true") ? true : false;
		
		assertNotNull(exists);
		assertEquals(expected, exists.booleanValue());
			
		exists = null;
	}

}
